by William Harrington

Introduction

The purpose of this document is to examine the output power capability of the power amplifier chosen by the Sputnik team for their module.

Materials

  • Programmable Signal Generator
  • Programmable Power Supply
  • KW0x Breakout board
  • Power Amplifier breakout board
  • Spectrum Analyzer
  • Touchless Temperature Gauge (?)

Procedure

With Signal Generator

  1. Used programmable signal generator for generating input power for power amplifier.
  2. Programmable power supply used for powering amplifier also gave measurement of current being pulled by PA when on.
  3. Output power of power amplifier measured by spectrum analyzer

With KW0x

  1. Used KW0x breakout board for generating input power for power amplifier.
  2. Programmable power supply used for powering amplifier also gave measurement of current being pulled by PA when on.
  3. Output power of power amplifier measured by spectrum analyzer

Measurements recorded

  • Input Power (dBm)
  • Current Consumption of Power Amplifier (Amps)
  • Temperature $(\,^{\circ}\mathrm{C})$
  • Output Power of the Power Amplifier (dBm)

In [146]:
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline
from IPython.display import set_matplotlib_formats

# Graphing helper function
def setup_graph(title='', x_label='', y_label='', fig_size=None):
    fig = plt.figure()
    if fig_size != None:
        fig.set_size_inches(fig_size[0], fig_size[1])
    ax = fig.add_subplot(111)
    ax.set_title(title)
    ax.set_xlabel(x_label)
    ax.set_ylabel(y_label)

With Signal Generator


In [147]:
# read the data
columns = np.loadtxt('RFPAtest.csv',
                    dtype=float,
                    delimiter=',',
                    unpack=True)

current = columns[0]
temp = columns[1]
input_power = columns[2]
output_power = columns[5]

Current


In [148]:
setup_graph('Current vs. Output Power',
            'Current (Amps)',
            r'Output Power $(dBm)$',
            (9,6.5))
plt.plot(current, output_power)
plt.show()



In [149]:
setup_graph('Current vs. Input Power',
            'Current (Amps)',
            r'Input Power $(dBm)$',
            (9,6.5))
plt.plot(current, input_power)
plt.show()



In [150]:
setup_graph('Current vs. Temperature',
            'Current (Amps)',
            r'Temp $(\,^{\circ}\mathrm{C})$',
            (9,6.5))
plt.plot(current, temp)
plt.show()


With KW0x


In [151]:
# read the data
columns = np.loadtxt('KW0xPAtest.csv',
                    dtype=float,
                    delimiter=',',
                    unpack=True)

current = columns[0]
temp = columns[1]
input_power = columns[2]
output_power = columns[5]
second_harm = columns[6]

Current


In [152]:
setup_graph('Current vs. Output Power',
            'Current (Amps)',
            r'Output Power $(dBm)$',
            (9,6.5))
plt.plot(current, output_power)
plt.show()



In [153]:
setup_graph('Current vs. Input Power',
            'Current (Amps)',
            r'Input Power $(dBm)$',
            (9,6.5))
plt.plot(current, input_power)
plt.show()



In [154]:
setup_graph('Current vs. Temperature',
            'Current (Amps)',
            r'Temp $(\,^{\circ}\mathrm{C})$',
            (9,6.5))
plt.plot(current, temp)
plt.show()


Power


In [155]:
setup_graph('Input Power vs. Output Power',
            'Input (dBm)',
            'Output (dBm)',
            (9,6.5))
plt.plot(input_power, output_power)
plt.show()



In [156]:
# get rid of 0 measurements
second_harm = second_harm[4:]
input_power = input_power[4:]

setup_graph('Input Power vs. 2nd Harmonic',
            r'Input Power $(dBm)$',
            r'2nd Harmonic $(dBm)$',
            (9,6.5))
plt.plot(input_power, second_harm)
plt.show()



In [157]:
output_power = output_power[4:]
delta = []
for i in range(len(output_power)):
    delta.append(output_power[i]-second_harm[i])


setup_graph('Output Power vs. Output Power - 2nd Harmonic',
            r'Output Power $(dBm)$',
            r'Output Power - 2nd Harmonic $(dBm)$',
            (9,6.5))
plt.plot(output_power, delta)
plt.show()